/*
 * Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
 * one or more contributor license agreements. See the NOTICE file distributed
 * with this work for additional information regarding copyright ownership.
 * Licensed under the Camunda License 1.0. You may not use this file
 * except in compliance with the Camunda License 1.0.
 */

import {BusinessObject} from 'bpmn-js/lib/NavigatedViewer';
import isNil from 'lodash/isNil';
import {isWithinMultiInstance} from './isWithinMultiInstance';
import {isAttachedToAnEventBasedGateway} from './isAttachedToAnEventBasedGateway';
import {hasType} from './hasType';

const isMoveModificationTarget = (
  businessObject: BusinessObject | null | undefined,
) => {
  return (
    !isNil(businessObject) &&
    !isWithinMultiInstance(businessObject) &&
    !isAttachedToAnEventBasedGateway(businessObject) &&
    !hasType({businessObject, types: ['bpmn:StartEvent', 'bpmn:BoundaryEvent']})
  );
};

export {isMoveModificationTarget};
